Make sure [xy]_offset are always being initialized, fix pixbuf renderer
authorKristian Rietveld <kris@gtk.org>
Sun, 3 Dec 2006 20:02:04 +0000 (20:02 +0000)
committerKristian Rietveld <kristian@src.gnome.org>
Sun, 3 Dec 2006 20:02:04 +0000 (20:02 +0000)
2006-12-03  Kristian Rietveld  <kris@gtk.org>

Make sure [xy]_offset are always being initialized, fix pixbuf
renderer padding.  (#108235, Sven Neuman).

* gtk/gtkcellrendererpixbuf.c (gtk_cell_renderer_pixbuf_get_size),
(gtk_cell_renderer_pixbuf_render): add padding in _render instead
of _get_size.

* gtk/gtkcellrendererprogress.c (gtk_cell_renderer_progress_get_size):
always initialize [xy]_offset.
* gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_get_size): ditto.
* gtk/gtkcellrenderertoggle.c (gtk_cell_renderer_toggle_get_size):
ditto.

ChangeLog
gtk/gtkcellrendererpixbuf.c
gtk/gtkcellrendererprogress.c
gtk/gtkcellrenderertext.c
gtk/gtkcellrenderertoggle.c

index 7e25dfb65e77481fd539affa7bde99f4be87567e..9a4aef63ac5af0e9fc972b5e0405c2c6b7e873a8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2006-12-03  Kristian Rietveld  <kris@gtk.org>
+
+       Make sure [xy]_offset are always being initialized, fix pixbuf
+       renderer padding.  (#108235, Sven Neuman).
+
+       * gtk/gtkcellrendererpixbuf.c (gtk_cell_renderer_pixbuf_get_size),
+       (gtk_cell_renderer_pixbuf_render): add padding in _render instead
+       of _get_size.
+
+       * gtk/gtkcellrendererprogress.c (gtk_cell_renderer_progress_get_size):
+       always initialize [xy]_offset.
+       * gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_get_size): ditto.
+       * gtk/gtkcellrenderertoggle.c (gtk_cell_renderer_toggle_get_size):
+       ditto.
+
 2006-12-03  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (validate_visible_area): when not using an
index 76fea367c3c2d1e8944aaf1a87fe7c8d32b1ecf8..1575b4cd707ae6d1db2106f36a6ce56a2ae574e0 100644 (file)
@@ -548,25 +548,27 @@ gtk_cell_renderer_pixbuf_get_size (GtkCellRenderer *cell,
   calc_width  = (gint) cell->xpad * 2 + pixbuf_width;
   calc_height = (gint) cell->ypad * 2 + pixbuf_height;
   
-  if (x_offset) *x_offset = 0;
-  if (y_offset) *y_offset = 0;
-
   if (cell_area && pixbuf_width > 0 && pixbuf_height > 0)
     {
       if (x_offset)
        {
          *x_offset = (((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ?
-                        1.0 - cell->xalign : cell->xalign) * 
-                       (cell_area->width - calc_width - 2 * cell->xpad));
-         *x_offset = MAX (*x_offset, 0) + cell->xpad;
+                        (1.0 - cell->xalign) : cell->xalign) * 
+                       (cell_area->width - calc_width));
+         *x_offset = MAX (*x_offset, 0);
        }
       if (y_offset)
        {
          *y_offset = (cell->yalign *
-                       (cell_area->height - calc_height - 2 * cell->ypad));
-          *y_offset = MAX (*y_offset, 0) + cell->ypad;
+                       (cell_area->height - calc_height));
+          *y_offset = MAX (*y_offset, 0);
        }
     }
+  else
+    {
+      if (x_offset) *x_offset = 0;
+      if (y_offset) *y_offset = 0;
+    }
 
   if (width)
     *width = calc_width;
@@ -602,8 +604,8 @@ gtk_cell_renderer_pixbuf_render (GtkCellRenderer      *cell,
                                     &pix_rect.width,
                                     &pix_rect.height);
 
-  pix_rect.x += cell_area->x;
-  pix_rect.y += cell_area->y;
+  pix_rect.x += cell_area->x + cell->xpad;
+  pix_rect.y += cell_area->y + cell->ypad;
   pix_rect.width  -= cell->xpad * 2;
   pix_rect.height -= cell->ypad * 2;
 
index 97de1157dd43c75e08fa037ae5d156428c96ef23..4a1183e16edecb80eaef0d5196c73419cf838150 100644 (file)
@@ -319,6 +319,9 @@ gtk_cell_renderer_progress_get_size (GtkCellRenderer *cell,
       if (height)
         *height = cell_area->height;
     }
+
+  if (x_offset) *x_offset = 0;
+  if (y_offset) *y_offset = 0;
 }
 
 static void
index 34b4b6acd02084b5ebe66ad99ecc1ceee0a7c929..b3cf5e7f16d2d64e2a3f09324cf6da89ed0f71cc 100644 (file)
@@ -1585,6 +1585,11 @@ get_size (GtkCellRenderer *cell,
          *y_offset = MAX (*y_offset, 0);
        }
     }
+  else
+    {
+      if (x_offset) *x_offset = 0;
+      if (y_offset) *y_offset = 0;
+    }
 
   g_object_unref (layout);
 }
index 3957d19cc59d5e5da415fbc804fdc136df7af8cd..2d01753912e874292a24dbc20b11ec316f553320 100644 (file)
@@ -310,6 +310,11 @@ gtk_cell_renderer_toggle_get_size (GtkCellRenderer *cell,
          *y_offset = MAX (*y_offset, 0);
        }
     }
+  else
+    {
+      if (x_offset) *x_offset = 0;
+      if (y_offset) *y_offset = 0;
+    }
 }
 
 static void